package iam

import (
	"time"
)

// UserGroup 用户组表模型
type UserGroup struct {
	ID          uint64    `gorm:"primary_key;auto_increment" json:"id"`
	Name        string    `gorm:"type:varchar(100);uniqueIndex;not null;comment:用户组名称" json:"name"`
	Description string    `gorm:"type:varchar(500);comment:用户组描述" json:"description"`
	IsDefault   bool      `gorm:"default:false;comment:是否为默认用户组" json:"is_default"`
	Status      int       `gorm:"type:tinyint;default:1;comment:状态 1:启用 2:禁用" json:"status"`
	CreateBy    uint64    `gorm:"comment:创建人ID" json:"create_by"`
	UpdateBy    uint64    `gorm:"comment:更新人ID" json:"update_by"`
	CreateTime  time.Time `gorm:"autoCreateTime;comment:创建时间" json:"create_time"`
	UpdateTime  time.Time `gorm:"autoUpdateTime;comment:更新时间" json:"update_time"`
}

// TableName 指定表名
func (UserGroup) TableName() string {
	return "user_groups"
}

// UserGroupMember 用户组成员关系表
type UserGroupMember struct {
	ID          uint64    `gorm:"primary_key;auto_increment" json:"id"`
	UserID      uint64    `gorm:"not null;comment:用户ID" json:"user_id"`
	GroupID     uint64    `gorm:"not null;comment:用户组ID" json:"group_id"`
	CreateBy    uint64    `gorm:"comment:创建人ID" json:"create_by"`
	CreateTime  time.Time `gorm:"autoCreateTime;comment:创建时间" json:"create_time"`
}

// TableName 指定表名
func (UserGroupMember) TableName() string {
	return "user_group_members"
}

// 用户组状态常量
const (
	UserGroupStatusEnabled  = 1 // 启用
	UserGroupStatusDisabled = 2 // 禁用
)